Export terrain in all formats available such as dtm, tin, xml, fil
The below code shows exporting the terrain into the file with the formats like *.dtm, *.tin, *.xml etc.
//Required References
using System;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
using Bentley.CifNET.GeometryModel.SDK;
using Bentley.CifNET.SDK;
using Bentley.GeometryNET;
using Bentley.MstnPlatformNET;
using Bentley.CifNET.TerrainModel.ImportExport;
public void ExportTerrain()
{
try
{
string exportFileName = "D:\\Output\\TerrainExported";
//Get active dgn model
Bentley.DgnPlatformNET.DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
//Create connection to dgnModel
Bentley.CifNET.SDK.ConsensusConnection consensusConnection = new ConsensusConnection(dgnModel);
//Get active geometric model
Bentley.CifNET.GeometryModel.SDK.GeometricModel geometricModel = consensusConnection.GetActiveGeometricModel();
if (geometricModel.ActiveSurface == null) return;
List<DPoint3d> pointList = new List<DPoint3d>();
//Get active terrain
Bentley.CifNET.GeometryModel.SDK.TerrainSurface terrainSurface = geometricModel.ActiveSurface as TerrainSurface;
if (terrainSurface == null) return;
//Get terrain import export manager
Bentley.CifNET.TerrainModel.ImportExport.DTMImportExportManager dTMImportExportManager = DTMImportExportManager.Instance;
if (dTMImportExportManager == null) return;
//Get list of terrain providers
Dictionary<string, DTMImportExportProvider> keyValuePairs = dTMImportExportManager.GetProviders();
//Export terrain with available providers for export
Bentley.TerrainModelNET.Formats.FileUnit unit = Bentley.TerrainModelNET.Formats.FileUnit.Foot;
foreach (System.Collections.Generic.KeyValuePair<string, DTMImportExportProvider> providers in DTMImportExportManager.Instance.GetProviders())
{
string key = providers.Key;
DTMImportExportProvider provider = providers.Value;
bool canExport = provider.CanExport;
if (canExport)
{
string fileNameWithExt = exportFileName + provider.FileFilter.Split('*').Last();
provider.ExportDTM(terrainSurface.DTM, fileNameWithExt, terrainSurface.Name, false, unit);
}
}
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
}
}